Matthias Clasen [Thu, 22 Oct 2020 04:22:15 +0000 (00:22 -0400)]
gtk-demo: Speed up image demo
The progressive loading demo here was so slow as to appear
broken. Make it faster, and ensure that it updates regularly.
Matthias Clasen [Thu, 22 Oct 2020 04:05:50 +0000 (00:05 -0400)]
gtk-demo: Add alternative text to a GtkPicture
This lets us text GtkPicture a11y support.
Matthias Clasen [Thu, 22 Oct 2020 04:04:52 +0000 (00:04 -0400)]
picture: Set alternative text as description
Use the alternative text as accessible description
for GtkPicture.
Matthias Clasen [Thu, 22 Oct 2020 03:54:09 +0000 (23:54 -0400)]
colorbutton: Improve accessibility
Make the swatch not appear selectable, and
set an accessible label on it.
Matthias Clasen [Thu, 22 Oct 2020 03:34:37 +0000 (23:34 -0400)]
a11y: Add actions for color swatches
Add the same actions that we exported in GTK 3.
Matthias Clasen [Thu, 22 Oct 2020 03:08:04 +0000 (23:08 -0400)]
colorswatch: Export some functions for a11y
Make simple functions to activate, select or customize
a GtkColorSwatch. These will be exported by a11y as
actions.
Matthias Clasen [Thu, 22 Oct 2020 02:52:46 +0000 (02:52 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
See merge request GNOME/gtk!2734
Matthias Clasen [Thu, 22 Oct 2020 01:54:17 +0000 (21:54 -0400)]
linkbutton: Use the LINK role
It is a bit ambiguous, but I think link buttons are
more links than buttons. See WAI-ARIA for a discussion
of the differences.
Update tests to match.
Matthias Clasen [Thu, 22 Oct 2020 01:47:14 +0000 (21:47 -0400)]
a11y: Document abstract roles
Since we mention abstract roles in the documentation
for GtkAccessibleRole, we should say what roles are
abstract. Doing this shows that we actually use two
abstract roles heavily, ourselves: WIDGET and WINDOW.
Matthias Clasen [Thu, 22 Oct 2020 01:40:19 +0000 (21:40 -0400)]
a11y: Document roles used in menu
Matthias Clasen [Wed, 21 Oct 2020 23:13:03 +0000 (19:13 -0400)]
atspi: Give model buttons a click action too
GtkModelButton is no longer derived from GtkButton,
but can still treat it like a button for the purposes
of having a click action. This lets ATs activate
menu items again.
Matthias Clasen [Thu, 22 Oct 2020 00:28:30 +0000 (20:28 -0400)]
modelbutton: Recreate our AT context
When the button role changes, we want to update the
accessible role to match. Since accessible roles are
unchangeable post-creation of the AT context, we have
to cheat a bit and recreate the whole context.
Matthias Clasen [Wed, 21 Oct 2020 20:35:39 +0000 (16:35 -0400)]
modelbutton: Initial accessibility setup
Set the accessible role to GTK_ACCESSIBLE_ROLE_MENU_ITEM.
This is incomplete, we need to recreate the context when
the buttons role changes, and there are other things that
need to be set.
Matthias Clasen [Wed, 21 Oct 2020 20:34:16 +0000 (16:34 -0400)]
popovermenubar: Initial accessibility setup
Set roles, properties and relations according to the
ARIA authoring practices document. This is not quite
complete.
Matthias Clasen [Wed, 21 Oct 2020 20:30:04 +0000 (16:30 -0400)]
popovermenu: Initial accessibility setup
Set roles, properties and relations according to the
ARIA authoring practices document.
Matthias Clasen [Wed, 21 Oct 2020 20:27:23 +0000 (16:27 -0400)]
menubutton: initial accessibility setup
Set roles, properties and relations according to the
ARIA authoring practices document.
Matthias Clasen [Wed, 21 Oct 2020 20:35:05 +0000 (16:35 -0400)]
separator: Remove unnecessary code
gtk_widget_update_orientation already sets the
accessible property, no need to do it again.
Matthias Clasen [Wed, 21 Oct 2020 19:09:55 +0000 (15:09 -0400)]
progressbar: Hide internal structure from a11y
According to section 7.1 of WAI-ARIA, the progressbar role
has the "Children presentational" characteristic, which
indicates that children should not be represented in
the a11y tree.
Matthias Clasen [Wed, 21 Oct 2020 19:04:06 +0000 (15:04 -0400)]
levelbar: Hide internal structure from a11y
According to section 7.1 of WAI-ARIA, the meter role
has the "Children presentational" characteristic, which
indicates that children should not be represented in
the a11y tree.
Matthias Clasen [Wed, 21 Oct 2020 18:55:13 +0000 (14:55 -0400)]
switch: Hide internal structure from a11y
According to section 7.1 of WAI-ARIA, the switch role
has the "Children presentational" characteristic, which
indicates that children should not be represented in
the a11y tree.
Matthias Clasen [Wed, 21 Oct 2020 18:53:17 +0000 (14:53 -0400)]
scale: Hide internal structure from a11y
According to section 7.1 of WAI-ARIA, the slider role
has the "Children presentational" characteristic, which
indicates that children should not be represented in
the a11y tree, which makes sense, since these are all
just internal gizmos.
Matthias Clasen [Wed, 21 Oct 2020 18:40:34 +0000 (14:40 -0400)]
a11y: Treat PRESENTATION like NONE
This is what ARIA tells us to do. NONE is just another
name for PRESENTATION.
Matthias Clasen [Wed, 21 Oct 2020 18:30:17 +0000 (14:30 -0400)]
docs: Add some more to the migration guide
Expand the section on life-cycle handling with some
more details.
Matthias Clasen [Wed, 21 Oct 2020 18:23:10 +0000 (14:23 -0400)]
docs: Small corrections to the a11y overview
The section titles were mixed up wrt to the content
of the sections.
Matthias Clasen [Wed, 21 Oct 2020 18:21:12 +0000 (14:21 -0400)]
Document GTK_ACCESSIBLE_ROLE_NONE
We use it for a specific purpose now, so document it.
Matthias Clasen [Wed, 21 Oct 2020 18:09:42 +0000 (18:09 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
Closes #3285
See merge request GNOME/gtk!2733
Matthias Clasen [Wed, 21 Oct 2020 17:46:58 +0000 (13:46 -0400)]
text: React to text attribute changes in css
Recompute the layout when the css style change
affects text attributes. This matches what we do
in GtkLabel, and without this, changing the
font-features-setting css property in the Inspector
does not have immediate effect.
Carlos Garnacho [Wed, 21 Oct 2020 16:20:58 +0000 (16:20 +0000)]
Merge branch 'wip/exalm/swipe4' into 'master'
gestureswipe: Count last event when calculating velocity
See merge request GNOME/gtk!2715
Alexander Mikhaylenko [Mon, 19 Oct 2020 09:13:56 +0000 (14:13 +0500)]
gestureswipe: Count last event when calculating velocity
The last event, matching lifting the finger/releasing the mouse button,
is important when there's a large delay between it and the previous events,
as in when performing a movement, stopping, then releasing fingers as
opposed to doing a swipe.
If this event is skipped, doing this will result in kinetic deceleration
matching the previous finger movement, while the expected behavior would
be no deceleration.
See also
5dc6194b98792d937c648835cfadbe64977db443 for a similar fix in
GtkEventControllerScroll.
Matthias Clasen [Wed, 21 Oct 2020 12:39:50 +0000 (08:39 -0400)]
columnview: Put overshoot underneath the headers
This matches what we do in GtkTreeView.
Fixes: #3285
Matthias Clasen [Wed, 21 Oct 2020 12:00:09 +0000 (08:00 -0400)]
range: Hide internals from accessibility
The nameless, faceless gizmos inside a range do not
contribute to the accessible experience at all, lets
not add them to the tree. All the accessible functionality
is on the main widget (either a scale or a scrollbar).
Matthias Clasen [Wed, 21 Oct 2020 11:59:56 +0000 (07:59 -0400)]
Cosmetics
Matthias Clasen [Wed, 21 Oct 2020 03:30:35 +0000 (23:30 -0400)]
frame: Set up accessible relations
Mark the child as labelled-by the label.
Matthias Clasen [Wed, 21 Oct 2020 11:43:58 +0000 (11:43 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
See merge request GNOME/gtk!2729
Timm Bäder [Wed, 21 Oct 2020 08:17:45 +0000 (08:17 +0000)]
Merge branch 'wip/exalm/nullable' into 'master'
widget: Add missing (nullable) on binding functions
See merge request GNOME/gtk!2730
Alexander Mikhaylenko [Tue, 20 Oct 2020 11:26:17 +0000 (16:26 +0500)]
widget: Add missing (nullable) on binding functions
Even though they are marked as (skip), they are used in Vala and have wrong
types there atm.
Matthias Clasen [Wed, 21 Oct 2020 03:19:30 +0000 (23:19 -0400)]
docs: Document more accessible roles
Document that GtkText is skipped in accessibility.
Matthias Clasen [Wed, 21 Oct 2020 03:19:18 +0000 (23:19 -0400)]
Cosmetics
Typo fix.
Matthias Clasen [Wed, 21 Oct 2020 03:09:11 +0000 (23:09 -0400)]
docs: Document more accessible roles
GtkColumnView and its various components use a lot
of accessible roles.
Matthias Clasen [Wed, 21 Oct 2020 02:53:30 +0000 (22:53 -0400)]
docs: Document more accessible roles
GtkListView and GtkGridView were missing this as well.
Matthias Clasen [Wed, 21 Oct 2020 02:51:11 +0000 (22:51 -0400)]
docs: Document accessible roles of some classes
GtkListBox and GtkFlowBox were missing this.
Matthias Clasen [Wed, 21 Oct 2020 02:44:24 +0000 (22:44 -0400)]
a11y: Add some more tests
Matthias Clasen [Wed, 21 Oct 2020 01:56:54 +0000 (21:56 -0400)]
inspector: Show accessible object path
Show the object path of the object on the a11y bus,
this is can be useful information. While we are here,
make sure that the Inspector does not throw criticals
when used with GTK_NO_A11Y=1.
Matthias Clasen [Wed, 21 Oct 2020 01:31:23 +0000 (21:31 -0400)]
atsi: Fix emission of text selection changes
We were not emitting text-selection-changed and
text-caret-moved as expected.
Matthias Clasen [Wed, 21 Oct 2020 01:27:39 +0000 (21:27 -0400)]
a11y: Fix handling of LABELLED_BY relation
There were several places where we were confusing
GList and GSList and list->data and list->next, causing
a crash in the accessible name computation for buttons
with mnemonic labels.
Matthias Clasen [Tue, 20 Oct 2020 22:26:38 +0000 (18:26 -0400)]
docs: Mention subclassing and destroy in the migration guide
Mention changes regarding subclassing and life-cycle
handling in the migration guide.
Benjamin Otte [Tue, 20 Oct 2020 14:05:49 +0000 (14:05 +0000)]
Merge branch 'wip/otte/for-master' into 'master'
Wip/otte/for master
Closes #3280
See merge request GNOME/gtk!2725
Matthias Clasen [Tue, 20 Oct 2020 05:57:45 +0000 (05:57 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Some more a11y tests
See merge request GNOME/gtk!2726
Matthias Clasen [Tue, 20 Oct 2020 05:12:20 +0000 (01:12 -0400)]
a11y: Add tests for GtkFlowBox
Test that roles, states and properties are as expected.
Matthias Clasen [Tue, 20 Oct 2020 05:07:13 +0000 (01:07 -0400)]
a11y: Add tests for GtkListBox
Test that roles, states and properties are as expected.
Matthias Clasen [Tue, 20 Oct 2020 04:46:07 +0000 (00:46 -0400)]
a11y: Add tests for GtkStack and GtkStackSwitcher
Test that the roles, states and relations are
as expected.
Matthias Clasen [Tue, 20 Oct 2020 04:24:26 +0000 (00:24 -0400)]
a11y: Add a test for label properties
Now that we set the label property, we should test it too.
Benjamin Otte [Tue, 20 Oct 2020 02:21:34 +0000 (04:21 +0200)]
gtk: Remove unused header include
gtkcssnodeprivate.h was mainly used for repositioning CSS nodes in
gadgets, and gadgets are gone now.
Benjamin Otte [Tue, 20 Oct 2020 02:05:52 +0000 (04:05 +0200)]
entry: Keep widget order
... instead of just ordering the CSS nodes.
Benjamin Otte [Tue, 20 Oct 2020 02:00:56 +0000 (04:00 +0200)]
flowbox: Keep widget order
... instead of just ordering the CSS nodes.
Benjamin Otte [Tue, 20 Oct 2020 01:56:30 +0000 (03:56 +0200)]
listbox: Reorder the widgets when sorting
... instead of just reordering the CSS nodes.
Benjamin Otte [Tue, 20 Oct 2020 01:54:07 +0000 (03:54 +0200)]
listitemwidget: Remove unnecessary code
gtk_widget_insert_after() reorders CSS nodes properly.
Benjamin Otte [Tue, 20 Oct 2020 01:52:51 +0000 (03:52 +0200)]
notebook: Remove unnecessary code
gtk_widget_insert_after() reorders CSS nodes properly.
Also fix page reordering code to actually reorder the widget instead of
just the CSS nodes.
Benjamin Otte [Mon, 19 Oct 2020 23:51:58 +0000 (01:51 +0200)]
box: Remove unnecessary code
gtk_widget_insert_after() reorders CSS nodes properly.
Benjamin Otte [Mon, 19 Oct 2020 23:50:12 +0000 (01:50 +0200)]
widget: Always update the CSS node
Anybody who keeps their own CSS nodes around or wants to order CSS nodes
different from widgets will from now on have to do it manually all the
time.
This is outdated behavior, nobody should be doing either of those two
things.
Also, the correct case is much more common, and not doing it
automatically was causing bugs.
Fixes #3280
Matthias Clasen [Tue, 20 Oct 2020 01:45:17 +0000 (01:45 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Some a11y docs and fixes
See merge request GNOME/gtk!2724
Matthias Clasen [Tue, 20 Oct 2020 01:13:27 +0000 (21:13 -0400)]
a11y: Fix accessible tree inconsistency
The stack page objects were not properly integrated
in the accessible tree - they were appearing as parent
of the pages when navigating up, but not as children
of the stack when navigating down.
Matthias Clasen [Tue, 20 Oct 2020 01:15:08 +0000 (21:15 -0400)]
stack: Minor doc addition
Matthias Clasen [Tue, 20 Oct 2020 00:01:57 +0000 (20:01 -0400)]
docs: Flesh out a11y section
Add some advice for making custom widgets accessible.
Matthias Clasen [Mon, 19 Oct 2020 21:26:47 +0000 (21:26 +0000)]
Merge branch 'wip/chergert/fix-macos-surface-under-pointer' into 'master'
macos: fix discovery of surface under pointer
See merge request GNOME/gtk!2722
Emmanuele Bassi [Mon, 19 Oct 2020 20:26:57 +0000 (20:26 +0000)]
Merge branch 'ebassi/for-master' into 'master'
Ebassi/for master
See merge request GNOME/gtk!2720
Matthias Clasen [Mon, 19 Oct 2020 20:16:21 +0000 (20:16 +0000)]
Merge branch 'a11y/editable' into 'master'
Improve the accessible support for editables
See merge request GNOME/gtk!2719
Christian Hergert [Mon, 19 Oct 2020 18:24:34 +0000 (11:24 -0700)]
macos: fix discovery of surface under pointer
Matthias Clasen [Mon, 19 Oct 2020 18:58:34 +0000 (14:58 -0400)]
a11y: Tweak name and description computation
Instead of falling back to the role nick for both,
fall back to the class name for the name, and to
the empty string for the description. This makes
labels show up in Accerciser the same way they
did in GTK 3, and seems more useful to me than
the alternative.
Matthias Clasen [Mon, 19 Oct 2020 18:57:43 +0000 (14:57 -0400)]
atspi: Use name and description as provided
GtkATContext already does fallbacks to derive values
for these, so no need for the atspi implementation to
do its own fallback on top of that.
Matthias Clasen [Mon, 19 Oct 2020 18:28:32 +0000 (14:28 -0400)]
label: Set the accessible label property
This will make label text show up in ATs again.
Emmanuele Bassi [Mon, 19 Oct 2020 17:39:40 +0000 (18:39 +0100)]
docs: Add a section on a11y patterns
Emmanuele Bassi [Mon, 19 Oct 2020 17:37:30 +0000 (18:37 +0100)]
docs: Start outlining a11y authoring practices
We should have documentation for application developers and widget
authors, so they can deal with the new accessibility API.
Matthias Clasen [Mon, 19 Oct 2020 16:58:29 +0000 (12:58 -0400)]
a11y: Rename some methods
Our EditableText implementation works fine for any
editable, so don't name the functions in a way that
looks like they are only for entries.
Matthias Clasen [Mon, 19 Oct 2020 16:56:50 +0000 (12:56 -0400)]
gtk-demo: Set an accessible role
Set the expected accessible role on the tagged entry
widget in the demo of the same name. Accessible tools
may decide to ignore widgets that have the wrong role,
so setting an appropriate role is important.
Matthias Clasen [Mon, 19 Oct 2020 16:54:45 +0000 (16:54 +0000)]
Merge branch 'a11y/component' into 'master'
a11y: Implement Component
See merge request GNOME/gtk!2718
Emmanuele Bassi [Fri, 16 Oct 2020 16:03:50 +0000 (17:03 +0100)]
a11y: Rework accessible name/description computation
The ARIA spec determines the name and description of accessible elements
in a more complex way that simply mapping to a single property; instead,
it will chain up multiple definitions (if it finds them). For instance,
let's assume we have a button that saves a file selected from a file
selection widget; the widgets have the following attributes:
- the file selection widget has a "label" attribute set to the
selected file, e.g. "Final paper.pdf"
- the "download" button has a "label" attribute set to the
"Download" string
- the "download" button has a "labelled-by" attribute set to
reference the file selection widget
The ARIA spec says that the accessible name of the "Download" button
should be computed as "Download Final paper.pdf".
The algorithm defined in section 4.3 of the WAI-ARIA specification
applies to both accessible names (using the "label" and "labelled-by"
attributes), and to accessible descriptions (using the "description" and
"described-by" attributes).
Matthias Clasen [Mon, 19 Oct 2020 16:44:50 +0000 (12:44 -0400)]
atspi: Implement Text for more editables
Our Text implementation requires that we have
a GtkEditable with a delegate that is a GtkText
widget.
This change make the Text implementation work for
the custom widget in the tagged entry demo.
Goran Vidović [Mon, 19 Oct 2020 16:36:42 +0000 (16:36 +0000)]
Update Croatian translation
(cherry picked from commit
fab2558747ace63ee656257f7001f81b3c6b9b49)
Matthias Clasen [Mon, 19 Oct 2020 16:36:54 +0000 (12:36 -0400)]
Add gtk_editable_get_delegate
We need access to the delegate in the a11y layer,
so we might as well make this function public.
Matthias Clasen [Mon, 19 Oct 2020 15:45:21 +0000 (11:45 -0400)]
atspi: Emit bounds-changed
This is using the new bounds_change vfunc in GtkATContext.
Matthias Clasen [Wed, 14 Oct 2020 01:20:08 +0000 (21:20 -0400)]
widget: Mark the size as changed when it changes
This notifies the AT context that the widgets size
has changed.
Matthias Clasen [Mon, 19 Oct 2020 15:33:38 +0000 (11:33 -0400)]
a11y: Add bounds change api
Add a way for GTK to pass bounds change information
to the AT context.
Matthias Clasen [Wed, 14 Oct 2020 01:23:22 +0000 (21:23 -0400)]
atspi: Implement Component
Implement the non-questionable parts of the Component interface
for accessibles which are widgets.
This does not include:
- global coordinates
- setters
- scrolling
- alpha, layers, zorder, and the like
Matthias Clasen [Mon, 19 Oct 2020 15:19:57 +0000 (11:19 -0400)]
a11y: Add a separate vfunc for platform changes
The state_change vfunc is becoming unwieldy. Lets move
the platform changes to their own vfunc, as a start.
Matthias Clasen [Mon, 19 Oct 2020 15:55:44 +0000 (11:55 -0400)]
atspi: Be more careful
We have non-widget accessibles now, so guard against
change notification being emitted on them.
Matthias Clasen [Mon, 19 Oct 2020 16:08:47 +0000 (12:08 -0400)]
Cosmetics
Add some more fold markers.
Matthias Clasen [Mon, 19 Oct 2020 16:00:53 +0000 (12:00 -0400)]
Cosmetics
Matthias Clasen [Mon, 19 Oct 2020 15:24:09 +0000 (11:24 -0400)]
Cosmetics
Matthias Clasen [Mon, 19 Oct 2020 15:00:17 +0000 (15:00 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Various columnview fixes
Closes #3265, #3272, and #3276
See merge request GNOME/gtk!2717
Xavier Claessens [Mon, 19 Oct 2020 13:46:54 +0000 (13:46 +0000)]
Merge branch 'msvc' into 'master'
gdkglcontext: Fix build with MSVC
Closes #3268
See merge request GNOME/gtk!2713
Matthias Clasen [Mon, 19 Oct 2020 13:46:32 +0000 (13:46 +0000)]
Merge branch 'annotations_gtkaboutdialog' into 'master'
Add nullable return annotations in GtkAboutDialog
See merge request GNOME/gtk!2712
Sophie Herold [Mon, 19 Oct 2020 13:46:32 +0000 (13:46 +0000)]
Add nullable return annotations in GtkAboutDialog
Matthias Clasen [Mon, 19 Oct 2020 12:42:33 +0000 (08:42 -0400)]
columnview: Make right-aligned content work
Make right-aligned content work in resized columns.
There is currently no way to make a title right-aligned,
but we can still make it work correctly. This is a follow
up to
7eb0ae39c5549bfaa4e.
Fixes: #3276
Matthias Clasen [Mon, 19 Oct 2020 13:37:20 +0000 (09:37 -0400)]
Adwaita: Put column separators on the left
When resizing columns, we clip a shrunk column
on the right, so the separator disappears in that
case unless we put it on the left side of the other
column.
Xavier Claessens [Sun, 18 Oct 2020 21:14:22 +0000 (17:14 -0400)]
gdkglcontext: Fix build with MSVC
GLDEBUGPROC callback is defined with APIENTRY which is a windows
specific calling convention. That macro expands to nothing when building
on other platforms.
Fixes: #3268.
Matthias Clasen [Mon, 19 Oct 2020 12:22:28 +0000 (08:22 -0400)]
columview: Make resize area a bit larger
This make column resizing feel less like a game
of hit-and-miss. Ultimatively, we should add an
alternative to this.
Matthias Clasen [Mon, 19 Oct 2020 02:34:07 +0000 (22:34 -0400)]
columview: Implement double-click to reset headers
Implement the same behavior as GtkTreeView:
double-click on the header boundary resets the
header to its automatic width.
Fixes: #3272
Matthias Clasen [Mon, 19 Oct 2020 12:28:24 +0000 (08:28 -0400)]
columnview: Make resize cursors reliable
Ensure that the column resize cursor stays in place
for the duration of the resize drag. This is a bit
annoying, since the implicit grab can end up on the
header of a different column from the one we are
resizing, so just set the cursor on all column headers.
Matthias Clasen [Mon, 19 Oct 2020 12:27:35 +0000 (08:27 -0400)]
columnview: Fix more issues with column resizing
Make it so that for overlapping resize rectangles (with
very narrow columns), we prefer the narrow column, so you
can regrow a column after shrinking it all the way.
Related: #3274